package com.east.spark.parttern.visitor;

/**
 * @author Administrator 访问者模式
 * 
 *         一个抽象类A 的几个实现列（a1,a2） 获取 另外一个抽象列B 的不同实现类(b1,b2)的 属性 ,实现做不同的方法操作。
 * 
 */
public class Client {

	public static void main(String[] args) {

		Medicine a = new MedicineA("板蓝根", 11.0);
		Medicine b = new MedicineB("感康", 14.3);

		Presciption presciption = new Presciption();
		presciption.addMedicine(a);
		presciption.addMedicine(b);

		Visitor charger = new Charger();
		charger.setName("张三");

		Visitor workerOfPharmacy = new WorkerOfPharmacy();
		workerOfPharmacy.setName("李四");

		presciption.accept(charger);
		System.out.println("-------------------------------------");
		presciption.accept(workerOfPharmacy);

	}

}
